import java.util.*;
import java.io.*;
import java.lang.*;
import javax.swing.*;
import java.awt.*;
import java.sql.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class M {
	// JDBC 驱动名及数据库 URL
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
    static final String DB_URL = "jdbc:mysql://localhost:3306/Login"; 
    // 数据库的用户名与密码，需要根据自己的设置
    static final String USER = "root";
    static final String PASS = "123456";
    
    public static void main(String[] args) {
    	
    	Connection conn = null;
    	Statement stmt = null;
        try {
        	// 注册 JDBC 驱动
            Class.forName("com.mysql.jdbc.Driver");        
            // 打开链接
            System.out.println("连接数据库...");
            conn = DriverManager.getConnection(DB_URL,USER,PASS);
        	final JFrame jf = new JFrame("黄金点游戏");
        	jf.setSize(400, 400);
        	jf.setLocationRelativeTo(null);
        	jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        	JTextField textField;
        	jf.setLayout(new FlowLayout());//创建面板布局
        	// 第 1 个 JPanel, 使用浮动布局，居中，并且组件的水平间距为20像素，垂直间距为40像素。
        	JPanel panel1 = new JPanel(new FlowLayout(FlowLayout.CENTER,20,40));
        	panel1.add(new JLabel("用户名 "));
        	textField=new JTextField(10);
        	panel1.add(textField);
	   
    
        	// 第 2 个 JPanel, 使用浮动布局，居中，并且组件的水平间距为20像素，垂直间距为40像素。
        	JPanel panel2 = new JPanel(new FlowLayout(FlowLayout.CENTER,20,40));
        	panel2.add(new JLabel("密   码 "));
       
        	JPasswordField passwordField=new JPasswordField(10);
        	String password=new String(passwordField.getPassword());
        	panel2.add(passwordField);
        	// 执行查询
            stmt = conn.createStatement();
            String sql;
            sql = "SELECT * FROM Login.Login";
            ResultSet rs = stmt.executeQuery(sql);
            while(rs.next()){
                // 通过字段检索               
                String user = rs.getString("user");
                String pass = rs.getString("pass"); 
            
                // 第 3 个 JPanel, 使用浮动布局, 并且容器内组件居中显示，并且组件的水平间距为20像素，垂直间距为40像素。
                JPanel panel3 = new JPanel(new FlowLayout(FlowLayout.CENTER,20,40)); 
                JButton jbOK=new JButton("登录");
                panel3.add(jbOK);
       

                JButton btn = new JButton("注册");
                panel3.add(btn);
                btn.addActionListener(new ActionListener() {
                	@Override
                	public void actionPerformed(ActionEvent e) {
                		jf.setVisible(false);
                		// 点击按钮, 显示新的一个窗口
                		showNewWindow(jf);
                	}
                });
                jbOK.addActionListener(new ActionListener() {
                	@Override
                	public void actionPerformed(ActionEvent e) {
                		if(user.equals(textField.getText()) && pass.equals(passwordField.getPassword())) {
                			jf.setVisible(false);
                			// 点击按钮, 显示新的一个窗口
                			show(jf);
                			System.out.println("登陆用户名："+textField.getText());
                		}
                		else {
                			
                			j(jf);
                		}
        			
            	
                	}
                });
            
                panel3.add(jbOK);
                panel3.add(btn);
                Box vBox = Box.createVerticalBox();
                vBox.add(panel1);
                vBox.add(panel2);
                vBox.add(panel3);

                jf.setContentPane(vBox);
                jf.setVisible(true);
            }
            // 完成后关闭
            rs.close();
            stmt.close();
            conn.close();
        }
        catch(Exception e){
            // 处理 Class.forName 错误
            e.printStackTrace();
        }finally{
            // 关闭资源
            try{
                if(stmt!=null) stmt.close();
            }catch(SQLException se2){
            }// 什么都不做
            try{
                if(conn!=null) conn.close();
            }catch(SQLException se){
                se.printStackTrace();
            }
        }
        System.out.println("Goodbye!");
        
    
    }
    public static void showNewWindow(JFrame relativeWindow) {
    	Connection conn = null;
    	Statement stmt = null;
    	try{
            // 注册 JDBC 驱动
            Class.forName("com.mysql.jdbc.Driver");        
            // 打开链接
            System.out.println("连接数据库...");
            conn = DriverManager.getConnection(DB_URL,USER,PASS);
            
            // 创建一个新窗口
            JFrame newJFrame = new JFrame("黄金点注册界面");

            newJFrame.setSize(400, 400);

            // 把新窗口的位置设置到 relativeWindow 窗口的中心
            newJFrame.setLocationRelativeTo(relativeWindow);

            // 点击窗口关闭按钮, 执行销毁窗口操作（如果设置为 EXIT_ON_CLOSE, 则点击新窗口关闭按钮后, 整个进程将结束）
            newJFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

            // 窗口设置为不可改变大小
            newJFrame.setResizable(true);
       
            newJFrame.setLayout(new FlowLayout());//创建面板布局
            // 第 1 个 JPanel, 使用浮动布局，居中，并且组件的水平间距为20像素，垂直间距为40像素。
            JPanel panel1 = new JPanel(new FlowLayout(FlowLayout.CENTER,20,20));
            panel1.add(new JLabel("用户名"));
            JTextField textField;
            textField=new JTextField(10);
            panel1.add(textField);

            // 第 2 个 JPanel, 使用浮动布局，居中，并且组件的水平间距为20像素，垂直间距为40像素。
            JPanel panel2 = new JPanel(new FlowLayout(FlowLayout.CENTER,20,20));
            panel2.add(new JLabel("密   码 "));
            JPasswordField passwordField=new JPasswordField(10);
            String password=new String(passwordField.getPassword());
            panel2.add(passwordField);
		
            JPanel panel3 = new JPanel(new FlowLayout(FlowLayout.CENTER,20,20));
            panel3.add(new JLabel("确认密码"));
    
            JPasswordField passwordField1=new JPasswordField(10);
            String password1=new String(passwordField1.getPassword());
            panel3.add(passwordField1);
     
            JPanel panel4 = new JPanel(new FlowLayout(FlowLayout.CENTER,20,20)); 
            JButton btn = new JButton("注册");
            panel4.add(btn);
            //插入语句
            String user = null;
            String pass = null;
            String Ins="('"+user+"','"+pass+"')";
            String sqlStr="insert into Login.Login values"+Ins;
            int ok=stmt.executeUpdate(sqlStr);
            
            btn.addActionListener(new ActionListener() {
            	@Override
            	public void actionPerformed(ActionEvent e) {
            		if(user.equals(textField) && pass.equals(passwordField.getPassword()) && password.equals(password1)) {
            			newJFrame.setVisible(false);
            			// 点击按钮, 显示新的一个窗口
            			NewWindow(newJFrame);
            			System.out.println("注册用户名："+textField.getText());
            		}
            		else {
            			
            			f(newJFrame);
            		}
            		
              
               
            	}
            });
            panel4.add(btn);
            Box vBox = Box.createVerticalBox();
            vBox.add(panel1);
            vBox.add(panel2);
            vBox.add(panel3);
            vBox.add(panel4);
       

            newJFrame.setContentPane(vBox);
            newJFrame.setVisible(true);
            // 完成后关闭
            stmt.close();
            conn.close();
        }catch(SQLException se){
            // 处理 JDBC 错误
            se.printStackTrace();
        }catch(Exception e){
            // 处理 Class.forName 错误
            e.printStackTrace();
        }finally{
            // 关闭资源
            try{
                if(stmt!=null) stmt.close();
            }catch(SQLException se2){
            }// 什么都不做
            try{
                if(conn!=null) conn.close();
            }catch(SQLException se){
                se.printStackTrace();
            }
        }
        System.out.println("Goodbye!");
        

    }
   public static void show(JFrame relativeWindow) {
        // 创建一个新窗口
        JFrame F = new JFrame("黄金点游戏界面");

        F.setSize(400, 400);

        // 把新窗口的位置设置到 relativeWindow 窗口的中心
        F.setLocationRelativeTo(relativeWindow);

        // 点击窗口关闭按钮, 执行销毁窗口操作（如果设置为 EXIT_ON_CLOSE, 则点击新窗口关闭按钮后, 整个进程将结束）
        F.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

        // 窗口设置为不可改变大小
        F.setResizable(true);
       
        F.setLayout(new FlowLayout());//创建面板布局
		 // 第 1 个 JPanel, 使用浮动布局，居中，并且组件的水平间距为20像素，垂直间距为40像素。
		JPanel panel1 = new JPanel(new FlowLayout(FlowLayout.CENTER,20,20));
      panel1.add(new JLabel("输入0-99间的数字"));
      JTextField textField;
	   textField=new JTextField(10);
   panel1.add(textField);
		

      // 第 2 个 JPanel, 使用浮动布局，居中，并且组件的水平间距为20像素，垂直间距为40像素。
      JPanel panel3 = new JPanel(new FlowLayout(FlowLayout.CENTER,20,20));
      panel3.add(new JLabel("   得 分 情 况 ： "));
      JTextField text;
	   text=new JTextField(10);
      panel3.add(text);
		
	   JPanel panel2 = new JPanel(new FlowLayout(FlowLayout.RIGHT,20,20)); 
       JButton jbOK=new JButton(" 发 送  ");
       panel2.add(jbOK);
      
      JPanel panel4 = new JPanel(new FlowLayout(FlowLayout.RIGHT,20,20)); 
       JButton btn = new JButton("退出登录");
       panel4.add(btn);
       btn.addActionListener(new ActionListener() {
           @Override
           public void actionPerformed(ActionEvent e) {
        	   F.setVisible(false);
               
           }
       });
      
	   jbOK.addActionListener(new ActionListener() {
           @Override
          
           public void actionPerformed(ActionEvent e) {
        	   for(int c=0;c<100;c++) {
			 int i= Integer.parseInt(textField.getText());
			 String [] w=new String[100];
        	   int number;
			   int sum=0;
			   number=(int)(Math.random()*100);
			   double G;
			   G=(int)(i+number)/2*0.618;
               if((i-G)>(number-G)){
			  }
			  else 
			 sum=sum+2;
              
            String b=Integer.toString(sum);
            w[c]=b;
           
			 text.setText(b);
        	   }
			 System.out.println("0-99数字："+textField.getText()); 
        	   
           }
       });
	    panel4.add(btn);
       panel4.add(btn);
       Box vBox = Box.createVerticalBox();
       vBox.add(panel1);
       vBox.add(panel2);
       vBox.add(panel3);
       vBox.add(panel4);

       F.setContentPane(vBox);
       F.setVisible(true);

    }


public static void NewWindow(JFrame relativeWindow) {
    // 创建一个新窗口
    JFrame ne = new JFrame("注册提示");

    ne.setSize(400, 400);

    // 把新窗口的位置设置到 relativeWindow 窗口的中心
    ne.setLocationRelativeTo(relativeWindow);

    // 点击窗口关闭按钮, 执行销毁窗口操作（如果设置为 EXIT_ON_CLOSE, 则点击新窗口关闭按钮后, 整个进程将结束）
    ne.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

    // 窗口设置为不可改变大小
    ne.setResizable(true);
    ne.setLayout(new FlowLayout());//创建面板布局
   JPanel panel=new JPanel(new FlowLayout(FlowLayout.CENTER,20,40));
   
   JButton btn = new JButton("开始游戏");
   panel.add(btn);
   btn.addActionListener(new ActionListener() {
       @Override
       public void actionPerformed(ActionEvent e) {
    	   ne.setVisible(false);
           // 点击按钮, 显示新的一个窗口
           show(ne);
       }
   });
   panel.add(btn);
 
   ne.setContentPane(panel);
   ne.setVisible(true);
   JLabel label = new JLabel("注册成功！");
   label.setFont(new Font(null, Font.PLAIN, 25));
   label.setHorizontalAlignment(SwingConstants.CENTER);
   label.setVerticalAlignment(SwingConstants.CENTER);
   panel.add(label);


}
public static void j(JFrame relativeWindow) {
    // 创建一个新窗口
    JFrame n = new JFrame("登陆提示");

    n.setSize(400, 400);

    // 把新窗口的位置设置到 relativeWindow 窗口的中心
    n.setLocationRelativeTo(relativeWindow);

    // 点击窗口关闭按钮, 执行销毁窗口操作（如果设置为 EXIT_ON_CLOSE, 则点击新窗口关闭按钮后, 整个进程将结束）
    n.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

    // 窗口设置为不可改变大小
    n.setResizable(true);
    n.setLayout(new FlowLayout());//创建面板布局
   JPanel panel=new JPanel(new FlowLayout(FlowLayout.CENTER,20,40));
   
   JButton btn = new JButton("重新登陆");
   panel.add(btn);
   btn.addActionListener(new ActionListener() {
       @Override
       public void actionPerformed(ActionEvent e) {
    	   n.setVisible(false);
           
           
       }
   });
   panel.add(btn);
 
   n.setContentPane(panel);
   n.setVisible(true);
   JLabel label = new JLabel("用户名不存在！请核对后登陆");
   label.setFont(new Font(null, Font.PLAIN, 25));
   label.setHorizontalAlignment(SwingConstants.CENTER);
   label.setVerticalAlignment(SwingConstants.CENTER);
   panel.add(label);


}
public static void f(JFrame relativeWindow) {
    // 创建一个新窗口
    JFrame nn = new JFrame("注册提示");

    nn.setSize(400, 400);

    // 把新窗口的位置设置到 relativeWindow 窗口的中心
    nn.setLocationRelativeTo(relativeWindow);

    // 点击窗口关闭按钮, 执行销毁窗口操作（如果设置为 EXIT_ON_CLOSE, 则点击新窗口关闭按钮后, 整个进程将结束）
    nn.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

    // 窗口设置为不可改变大小
    nn.setResizable(true);
    nn.setLayout(new FlowLayout());//创建面板布局
   JPanel panel=new JPanel(new FlowLayout(FlowLayout.CENTER,20,40));
   
   JButton btn = new JButton("确定");
   panel.add(btn);
   btn.addActionListener(new ActionListener() {
       @Override
       public void actionPerformed(ActionEvent e) {
    	   nn.setVisible(false);
           
           
       }
   });
   panel.add(btn);
 
   nn.setContentPane(panel);
   nn.setVisible(true);
   JLabel label = new JLabel("密码不一致！请重新输入");
   label.setFont(new Font(null, Font.PLAIN, 25));
   label.setHorizontalAlignment(SwingConstants.CENTER);
   label.setVerticalAlignment(SwingConstants.CENTER);
   panel.add(label);


}

}